package com.amsp.oa.oademo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@TableName("position_salary_change")
@ApiModel(value = "职位/薪资异动申请")
public class PositionSalaryChange {

    @TableId(type = IdType.AUTO)
    @ApiModelProperty("主键ID")
    private Long id;

    @ApiModelProperty("申请日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private LocalDate applyDate;

    @ApiModelProperty("工号")
    private String employeeNo;

    @ApiModelProperty("姓名")
    private String employeeName;

    @ApiModelProperty("性别")
    private String gender;

    @ApiModelProperty("年龄")
    private Integer age;

    @ApiModelProperty("最高学历")
    private String highestEducation;

    @ApiModelProperty("入职日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private LocalDate entryDate;

    @ApiModelProperty("原任职部门")
    private String originalDepartment;

    @ApiModelProperty("原职务/职位")
    private String originalPosition;

    @ApiModelProperty("新任职部门")
    private String newDepartment;

    @ApiModelProperty("新职务/职位")
    private String newPosition;

    @ApiModelProperty("正式任用")
    private Boolean isFormalHire;

    @ApiModelProperty("终止劳动关系")
    private Boolean isTerminateLabor;

    @ApiModelProperty("延长试用期")
    private Boolean isExtendProbation;

    @ApiModelProperty("试用期月数")
    private Integer probationMonths;

    @ApiModelProperty("变更职务")
    private Boolean isChangePosition;

    @ApiModelProperty("变更薪资")
    private Boolean isChangeSalary;

    @ApiModelProperty("其他变更")
    private Boolean isOtherChange;

    @ApiModelProperty("其他变更说明")
    private String otherChangeDesc;

    @ApiModelProperty("原级别")
    private String originalLevel;

    @ApiModelProperty("原薪档")
    private String originalPayGrade;

    @ApiModelProperty("原基础工资")
    private BigDecimal originalBaseSalary;

    @ApiModelProperty("原技能工资")
    private BigDecimal originalSkillSalary;

    @ApiModelProperty("原岗位工资")
    private BigDecimal originalPositionSalary;

    @ApiModelProperty("原加班工资")
    private BigDecimal originalOvertimePay;

    @ApiModelProperty("原绩效奖金")
    private BigDecimal originalPerformanceBonus;

    @ApiModelProperty("原岗位津贴")
    private BigDecimal originalPostAllowance;

    @ApiModelProperty("原特殊津贴")
    private BigDecimal originalSpecialAllowance;

    @ApiModelProperty("原其他金额")
    private BigDecimal originalOtherAmount;

    @ApiModelProperty("原合计")
    private BigDecimal originalTotal;

    @ApiModelProperty("新级别")
    private String newLevel;

    @ApiModelProperty("新薪档")
    private String newPayGrade;

    @ApiModelProperty("新基础工资")
    private BigDecimal newBaseSalary;

    @ApiModelProperty("新技能工资")
    private BigDecimal newSkillSalary;

    @ApiModelProperty("新岗位工资")
    private BigDecimal newPositionSalary;

    @ApiModelProperty("新加班工资")
    private BigDecimal newOvertimePay;

    @ApiModelProperty("新绩效奖金")
    private BigDecimal newPerformanceBonus;

    @ApiModelProperty("新岗位津贴")
    private BigDecimal newPostAllowance;

    @ApiModelProperty("新特殊津贴")
    private BigDecimal newSpecialAllowance;

    @ApiModelProperty("新其他金额")
    private BigDecimal newOtherAmount;

    @ApiModelProperty("新合计")
    private BigDecimal newTotal;

    @ApiModelProperty("备注")
    private String remarks;

    @ApiModelProperty("奖励审查结果")
    private String rewardResult;

    @ApiModelProperty("处分审查结果")
    private String punishmentResult;

    @ApiModelProperty("病假天数")
    private Integer sickLeaveDays;

    @ApiModelProperty("事假天数")
    private Integer personalLeaveDays;

    @ApiModelProperty("旷职天数")
    private Integer absenceDays;

    @ApiModelProperty("培训结果")
    private String trainingResult;

    @ApiModelProperty("培训课时")
    private Integer trainingHours;

    @ApiModelProperty("员工签名")
    private String employeeSignature;

    @ApiModelProperty("员工签名日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private LocalDate employeeSignatureDate;

    @ApiModelProperty("原部门意见")
    private String originalDeptOpinion;

    @ApiModelProperty("原部门主管")
    private String originalDeptSupervisor;

    @ApiModelProperty("原部门经理意见")
    private String originalDeptManagerOpinion;

    @ApiModelProperty("原部门经理")
    private String originalDeptManager;

    @ApiModelProperty("原部门总监意见")
    private String originalDeptDirectorOpinion;

    @ApiModelProperty("原部门总监")
    private String originalDeptDirector;

    @ApiModelProperty("原部门总经理意见")
    private String originalDeptGmOpinion;

    @ApiModelProperty("原部门总经理")
    private String originalDeptGm;

    @ApiModelProperty("新部门意见")
    private String newDeptOpinion;

    @ApiModelProperty("新部门主管")
    private String newDeptSupervisor;

    @ApiModelProperty("新部门经理意见")
    private String newDeptManagerOpinion;

    @ApiModelProperty("新部门经理")
    private String newDeptManager;

    @ApiModelProperty("新部门总监意见")
    private String newDeptDirectorOpinion;

    @ApiModelProperty("新部门总监")
    private String newDeptDirector;

    @ApiModelProperty("新部门总经理意见")
    private String newDeptGmOpinion;

    @ApiModelProperty("新部门总经理")
    private String newDeptGm;

    @ApiModelProperty("生效日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private LocalDate effectiveDate;

    @ApiModelProperty("人资经办")
    private String hrHandler;

    @ApiModelProperty("总裁意见")
    private String presidentOpinion;

    @ApiModelProperty("总裁")
    private String president;

    @ApiModelProperty("企业管理部意见")
    private String managementDeptOpinion;

    @ApiModelProperty("企业管理部")
    private String managementDept;

    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime createTime;

    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime updateTime;
}